package cn.lg.soar.core.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 缓存有效期
 * 因为spring@Cacheable无法单独指定有效期，所以增加该注解，用于指定本地和远程缓存失效时间，需和spring@Cacheable配合使用。
 * 注意：因为需要切面且会多执行一次 Map.get(name)方法，所以相比单独使用spring@Cacheable会有一点点性能损耗，不过可以忽略不计
 * @author luguoxiang
 * @date 2022/6/27
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CacheExpire {

    /**
     * 缓存名称
     */
    String value();

    /**
     * 本地缓存有效期，单位：秒
     */
    int localExpire() default 0;

    /**
     * 远程缓存有效期，单位：秒
     */
    int remoteExpire() default 0;

}
